/*
 * Tagi wykorzystywane przy wyświetlaniu aukcji
 */
class AuctionTagLib {

    static namespace = "jep"

    def authenticateService

    /**
     * Wyświetla formularz do licytowania
     * przyjmuje atrybut auction zawierający aukcję
     */
    def offerForm = { attrs, body ->
        if (authenticateService.isLoggedIn()) {
            def userDomain = authenticateService.userDomain()
            def user = User.get(userDomain?.id)

            if (user?.getBalance() > attrs.auction?.price?.toInteger()) {
                out << render (template: "/offer/form", model: [person: user, auction: attrs.auction])
            }
            else {
                out << "<p>Masz za mało brykietów na koncie, aby wziąść udział w aukcji.</p>"
            }
        }
        else {
            out << "<p>Musisz być zalogowany, aby wziąść udział w aukcji.</p>"
        }
    }

    /**
     * Wyświetla termin zakończenia aukcji. Jeśli do zakończenia zostało mniej
     * niż dwa dni, to podświetla na wybrany kolor (domyślnie czerwony),
     * jeśli aukcja zakończona, to wyświetla napis "Zakończona"
     * color - kolor na jaki ma wyświetlić zawartość
     * date - data zakończenia aukcji
     */
    def finish = { attrs, body ->
        attrs.color = attrs.color ?: "#ff0000" //domyślnie czerwony

        def dateFormat = attrs.format ?: "yyyy-MM-dd"
        def date = new java.text.SimpleDateFormat(dateFormat).format(attrs.date)

        if (attrs.date.compareTo(new Date()) > 0) {
            def oneDay = 24 * 60 * 60 * 1000
            def now = new Date()

            if ( (attrs.date.getTime() - now.getTime()) > oneDay ) {
                out << "Zakończenie: " << date
            }
            else {
                out << "<span style=\"color:${attrs.color};\">Zakończenie: " << date << "</span>"
            }
        }
        else {
            out << "<span style=\"color:${attrs.color};\">Zakończona (" << date << ")</span>"
        }
    }
}
